# @Time    : 2022/9/16 16:29
# @Author  : 南黎
# @FileName: B.二维数据图.py
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from prettytable import PrettyTable
from sklearn import preprocessing
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix
from sklearn.model_selection import train_test_split

def load_data():
    data=pd.read_csv("Iris.csv").values

    #1.把第五个y值改成1或0
    for i in range(len(data)):
        if data[i,4]=='setosa':
            data[i,4]=1
        elif data[i,4]=='versicolor':
            data[i,4]=0

    #2.数据归一化
    max_abs_scaler = preprocessing.MaxAbsScaler()#注册一个预处理对象
    data = max_abs_scaler.fit_transform(data)#fit_transform(X[, y])	适合数据，然后转换它。

    #3.切片取得特征值和分类标记
    Iris_X=data[:,0:4]#取得前面的4个特征值
    Iris_Y=data[:,4]#取得第五个分类结果,用1和0表示
    return  Iris_X,Iris_Y.astype('int')#注意一定要让y值加上.astype('int'),否则会报错，对于标本结果必须要是整型。

#1.读取数据
Iris_X,Iris_Y=load_data()
#把两类数据分类
arry_1=[]
arry_0=[]
for i in range(len(Iris_X)):
    if Iris_Y[i]==1:
        arry_1.append(Iris_X[i])
    elif Iris_Y[i]==0:
        arry_0.append(Iris_X[i])
arry_1=np.array(arry_1)
arry_0=np.array(arry_0)

#2.绘制散点图
plt.rcParams["font.sans-serif"]=["SimHei"] #用来正常显示中文标签
plt.title("分类散点图图")
plt.xlabel("特征1")
plt.ylabel("特征3")

#绘制散点图：scatter
plt.scatter(arry_1[:,0],arry_1[:,1],label='x',marker = "x")
plt.scatter(arry_0[:,0],arry_0[:,1],label='o',marker = "o")
#绘制标签
plt.legend(['setosa','versicolor'], loc=2, fontsize=10)

plt.savefig("B.二维数据图.png")
plt.show()
